package jp.seraph.same.controller;

import jp.seraph.same.model.MotionElementModel;

public interface MotionSessionController {
    /**
     * 全ての関節を選択状態にして、新しいMotionElementModelを生成します。
     *
     * @param aElementName
     * @return 生成されたElementModel
     */
    public MotionElementModel createElement(String aElementName);

    /**
     * 全ての関節を選択状態にするかどうかを指定して、新しいMotionElementModelを生成します。
     *
     * @param aElementName
     * @param aSelectAll 全ての関節を選択状態にする場合true
     * @return 生成されたElementModel
     */
    public MotionElementModel createElement(String aElementName, boolean aSelectAll);

    public MotionElementModel getElement(String aElementName);

    public void renameElement(String aFrom, String aTo);

    public void removeElement(String aElementName);
    public void removeElement(MotionElementModel aTarget);

    public void delete();

    public void rename(String aNewName);

    /**
     * このコントローラが操作対象にしているSessionの順位を一つ上げます
     */
    public void moveUp();

    /**
     * このコントローラが操作対象にしているSessionの順位を一つ下げます
     */
    public void moveDown();
}
